Skip to main content

路由中间件之 ShareErrorsFromSession

简介

[
'App\Http\Middleware\EncryptCookies',
'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
'Illuminate\Session\Middleware\StartSession',
'Illuminate\View\Middleware\ShareErrorsFromSession', // 本章内容
'App\Http\Middleware\VerifyCsrfToken',
'Illuminate\Routing\Middleware\SubstituteBindings',
'App\Http\Middleware\RedirectIfAuthenticated',
]

上一章,我们看了 StartSession 中间件源码,总结其大体作用:从 Cookie 中获取 SessionID,然后从 Laravel Storage 中获取序列化的会话信息;生成 Response SessionID,加入 Cookie 中返回给前端,最后将会话序列化保存到 Laravel Storage 中。

本章,如上:ShareErrorsFromSession。

从字面意思,可以看出是指从 Session 中分享错误信息至 View 视图中。

handle 方法

Illuminate\View\Middleware\ShareErrorsFromSession

public function handle($request, Closure $next)
{
// 从 session 中获取错误信息,绑定到 view 视图中
$this->view->share(
'errors', $request->session()->get('errors') ?: new ViewErrorBag
);

return $next($request);
}

在讲这个中间件之前。我们来看一段官方文档

Laravel

此段地址--->传送门

然而,官方文档提到的将错误信息闪存到 Session 中,然后供 视图 使用,其中从 Session 中取错误数据的功能,就是此中间件负责的事情。